The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
In applications such as stock quote monitoring, automobile traffic monitoring, and data sensing, data is in the form of continuous data streams. A continuous data stream is a stream of data that arrives at a stream processing server with no explicit end range. Continuous data streams comprise of a plurality of tuples. As used herein, “tuples” have the same series of attributes but not necessarily the same attribute values for those attributes. Each tuple is also associated with a particular time. A tuple may also be referred to as a single row or record in a relational database.
Processing the continuous data streams is often referred to as “event stream processing” because the goal when analyzing these data streams may be to identify meaningful events within those streams. Techniques may be employed to detect complex patterns, event correlations, and relationships between events. For example, a continuous data stream might have information about automobiles that pass a particular section on a highway. A sensor detects automobiles that pass the particular section of highway and sends data that might indicate the type of automobile, the speed of the automobile, and the time that the automobile was on the particular section. Based upon this data stream, events such as heavy traffic congestion (indicated by slow average speeds of automobiles) may be detected.
Traditional database systems and data processing algorithms are designed to process data stored as finite stored data sets. Traditional database systems store data in database tables where the data may be queried and manipulated using a data management language such as SQL. Database management systems and algorithms are unable to handle continuous data streams because they are designed based upon the assumption that the system stores a large, but finite, collection of data. Continuous data streams, by contrast, have no explicit end range and storing the data may be impractical with the large amounts of data that is continually sent.
Applications for continuous data streams have become increasingly prevalent because of the growing number of networks used for monitoring and sensing actions. As a result, the ability to process and handle large volumes of continuous data streams arriving in real-time and to be able to deliver results in a timely fashion have become very important.